<?php
class UserRegistrarReservaFinalizadoController extends GenericController {

    private $generarListadoBO;
    private $procesarFichaBO;
    private $procesarReservaBO;
    private $consultaLolimsaBO;
    private $visaNetBO;

    public function __construct() {
        $this->className = 'UserRegistrarReservaFinalizadoController';
        LogUtil::info("class $this->className", "__construct");
        $this->generarListadoBO = BOFactory::getGenerarListadoBO();
        $this->procesarFichaBO = BOFactory::getProcesarFichaBO();
        $this->procesarReservaBO = BOFactory::getProcesarReservaBO();
        $this->consultaLolimsaBO = BOFactory::getConsultaLolimsaBO(); 
        $this->visaNetBO = BOFactory::getVisaNetBO();
    }

    public function __destruct() {
        LogUtil::info("class $this->className", "__destruct");
    }

    public function main() {
        LogUtil::info("class $this->className", "main"); 
        if(isset($_POST['eticket'])){     
            $this->messages = new WP_Error(); 
            try{  
                //recuperamos el eticket
                $eticketRecuperado = $_POST['eticket'];
                //Invocamos al WS de VISA para recuperar datos
                $VISANET_CODIGOTIENDA = $this->procesarReservaBO->obtenerOpcionPorId(Constantes::$OPCION_CODIGO_COMERCIO_VISA);
                $retornoVisa = $this->visaNetBO->consultaETicket($VISANET_CODIGOTIENDA->valor, $eticketRecuperado);
                //Existen 2 posibles respuestas:
                //a) 1= Aprobada
                //b) 2= Denegada
                $reserva = new Reserva();
                $ficha = new Ficha();
                $medico = new Medico();
                $horario = new Horario();
                $accionVisa = new AccionVisa();
                if($retornoVisa->respuesta=='1'){
                    //actualizamos la ficha y la reserva
                    $id_reserva = $this->procesarReservaBO->actualizarReservaPorConfirmacionPago($eticketRecuperado);
                    //obtenemos los datos de la reserva y la ficha
                    $reserva = $this->procesarReservaBO->obtenerReservaPorId($id_reserva);
                    $ficha = $this->procesarFichaBO->obtenerFichaPorId($reserva->Ficha_id);
                    //enviamos los datos de la reserva a LOLIMSA
                    $res=$this->consultaLolimsaBO->getToken();
                    $sch=new SegmentoSCH();
                    $sch->segmentoSCH("Cita desde la Pagina Web", "0");                    
                    $pid=new SegmentoPID();
                    $pid->SegmentoPID($ficha->nombre, "M","", $ficha->telefono);                    
                    $rgs=new SegmentoRGS();
                    $rgs->SegmentoRGS();   
                    $medico = $this->procesarReservaBO->obtenerMedicoPorId($ficha->Medico_id);                    
                    $horario = $this->procesarReservaBO->obtenerHorarioPorId($ficha->Horario_id);
                    $ais=new SegmentoAIS();
                    $ais->SegmentoAIS($medico->codServLolimsa, date("Ymd",strtotime($ficha->fecha_cita)).$horario->codLolimsa."00");                    
                    $ail=new SegmentoAIL();
                    $ail->SegmentoAIL(Constantes::$CODIGO_ESTABLECIMIENTO_CLINICA_LOLIMSA);                    
                    $aip=new SegmentoAIP();
                    $aip->SegmentoAIP($medico->codLolimsa);
                    $res=$this->consultaLolimsaBO->AppointmentInsert($res->token,$sch,$pid,$rgs,$ais,$ail,$aip);
                    //cargamos los datos
                    $_POST['txtNroPedido']=$retornoVisa->nroOrden;
                    $_POST['txtTarjetaEnmascarada']=$retornoVisa->pan;
                    $_POST['txtFechaPedido']=$retornoVisa->fechaHoraTx;
                    $_POST['txtImporte']=$retornoVisa->impAutorizado;
                    $_POST['txtPaciente']=$ficha->nombre;
                    $_POST['txtDni']=$ficha->dni;
                    $_POST['txtMedico']=$medico->descripcion;
                    $_POST['txtFechaCita']= date("d/m/Y", strtotime($ficha->fecha_cita));
                    $_POST['txtHoraCita']=$horario->descripcion;
                    $_POST['txtMotivo']=$ficha->motivo;
                    //finalmente enviamos en email al paciente
                    $cabeceras = "From: no-reply@clinicamorillas.com\r\nContent-type: text/html\r\n";
                    $destinatario = $ficha->email;
                    $asunto = 'Reserva de Cita - Clinica Morillas';
                    $mensaje = 'Estimado(a) '.$ficha->nombre.'<br>';                    
                    
$mensaje = $mensaje . '<table align="center" cellspacing="5" >'; 
$mensaje = $mensaje . '<thead>'; 
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<th colspan="2">Gracias por su reserva</th>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '</thead>'; 
$mensaje = $mensaje . '<tbody>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td colspan="2">'; 
$mensaje = $mensaje . '<h4 style="margin:0;">Detalles de la transacci&oacute;n</h4>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>';                       
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . 'N&uacute;mero de pedido:'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . '<span>'.$retornoVisa->nroOrden.'</span>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . 'Tipo de tarjeta:'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . '<span>VISA</span>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . 'N&uacute;mero de tarjeta enmascarada:'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . '<span>'.$retornoVisa->pan.'</span>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . 'Fecha y hora del pedido:'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . '<span>'.$retornoVisa->fechaHoraTx.'</span>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . 'Importe de la transacci&oacute;n:'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . '<span>S/.'.$retornoVisa->impAutorizado.'</span>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td colspan="2">'; 
$mensaje = $mensaje . '<h4 style="margin:0;">Detalles de la cita:</h4>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . 'Nombre del paciente:'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . '<span>'.$ficha->nombre.'</span>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . 'DNI/CE:'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . '<span>'.$ficha->dni.'</span>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>';
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . 'M&eacute;dico o Especialista:'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . '<span>'.$medico->descripcion.'</span>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . 'Fecha:'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . '<span>'.$ficha->fecha_cita.'</span>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . 'Hora:'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . '<span>'.$horario->descripcion.'</span>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '<tr>';
$mensaje = $mensaje . '<td>';
$mensaje = $mensaje . 'Motivo:';
$mensaje = $mensaje . '</td>';
$mensaje = $mensaje . '<td>';
$mensaje = $mensaje . '<span>'.$ficha->motivo.'</span>';
$mensaje = $mensaje . '</td>';
$mensaje = $mensaje . '</tr>';
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td colspan="2">'; 
$mensaje = $mensaje . '<span>'; 
$mensaje = $mensaje . 'Por favor, imprima esta confirmaci&oacute;n y ll&eacute;vela a su cita con su DNI.'; 
$mensaje = $mensaje . 'Llegue 30 minutos antes para no perder su consulta.'; 
$mensaje = $mensaje . '</span>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '</tbody>'; 
$mensaje = $mensaje . '<tfoot>'; 
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<th colspan="2">'; 
$mensaje = $mensaje . 'Gracias por reservar su consulta con Cl&iacute;nica Morillas'; 
$mensaje = $mensaje . '</th>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '</tfoot>'; 
$mensaje = $mensaje . '</table>'; 
                    
                    $mensaje = $mensaje . 'Recuerde llegar 30 minutos antes de su cita<br>';
                    $mensaje = $mensaje . '<br><a href="http://clinicamorillas.com">http://clinicamorillas.com</a>';
                    mail($destinatario, $asunto, $mensaje, $cabeceras);
                    //asi mismo alos administradores de la clinica
                    $email_administradores = $this->procesarReservaBO->obtenerOpcionPorId(Constantes::$OPCION_EMAILS_ADMINISTRADORES);
                    $item_email = strtok($email_administradores->valor, ",");
$cabeceras = "From: no-reply@clinicamorillas.com\r\nContent-type: text/html\r\n";
$asunto = 'Reserva de Cita - Clinica Morillas';
$mensaje = 'Reserva de Cita V&iacute;a Formulario Web<br>';   
$mensaje = $mensaje . '<table align="center" cellspacing="5" >'; 
$mensaje = $mensaje . '<thead>'; 
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<th colspan="2">Confirmaci&oacute;n de reserva</th>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '</thead>'; 
$mensaje = $mensaje . '<tbody>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td colspan="2">'; 
$mensaje = $mensaje . '<h4 style="margin:0;">Detalles de la transacci&oacute;n</h4>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>';                       
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . 'N&uacute;mero de pedido:'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . '<span>'.$retornoVisa->nroOrden.'</span>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . 'Tipo de tarjeta:'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . '<span>VISA</span>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . 'N&uacute;mero de tarjeta enmascarada:'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . '<span>'.$retornoVisa->pan.'</span>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . 'Fecha y hora del pedido:'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . '<span>'.$retornoVisa->fechaHoraTx.'</span>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . 'Importe de la transacci&oacute;n:'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . '<span>S/.'.$retornoVisa->impAutorizado.'</span>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td colspan="2">'; 
$mensaje = $mensaje . '<h4 style="margin:0;">Detalles de la cita:</h4>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . 'Nombre del paciente:'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . '<span>'.$ficha->nombre.'</span>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>';  
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . 'DNI/CE:'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . '<span>'.$ficha->dni.'</span>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>';
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . 'M&eacute;dico o Especialista:'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . '<span>'.$medico->descripcion.'</span>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . 'Fecha:'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . '<span>'.$ficha->fecha_cita.'</span>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . 'Hora:'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '<td>'; 
$mensaje = $mensaje . '<span>'.$horario->descripcion.'</span>'; 
$mensaje = $mensaje . '</td>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '<tr>';
$mensaje = $mensaje . '<td>';
$mensaje = $mensaje . 'Motivo:';
$mensaje = $mensaje . '</td>';
$mensaje = $mensaje . '<td>';
$mensaje = $mensaje . '<span>'.$ficha->motivo.'</span>';
$mensaje = $mensaje . '</td>';
$mensaje = $mensaje . '</tr>';
//se agrega el correo y el telefono
$mensaje = $mensaje . '<tr>';
$mensaje = $mensaje . '<td>';
$mensaje = $mensaje . 'Email:';
$mensaje = $mensaje . '</td>';
$mensaje = $mensaje . '<td>';
$mensaje = $mensaje . '<span>'.$ficha->email.'</span>';
$mensaje = $mensaje . '</td>';
$mensaje = $mensaje . '</tr>';
$mensaje = $mensaje . '<tr>';
$mensaje = $mensaje . '<td>';
$mensaje = $mensaje . 'Tel&eacute;fono:';
$mensaje = $mensaje . '</td>';
$mensaje = $mensaje . '<td>';
$mensaje = $mensaje . '<span>'.$ficha->telefono.'</span>';
$mensaje = $mensaje . '</td>';
$mensaje = $mensaje . '</tr>';
//--
$mensaje = $mensaje . '</tbody>'; 
$mensaje = $mensaje . '<tfoot>'; 
$mensaje = $mensaje . '<tr>'; 
$mensaje = $mensaje . '<th colspan="2">'; 
$mensaje = $mensaje . 'Cl&iacute;nica Morillas'; 
$mensaje = $mensaje . '</th>'; 
$mensaje = $mensaje . '</tr>'; 
$mensaje = $mensaje . '</tfoot>'; 
$mensaje = $mensaje . '</table>'; 
                    while ($item_email !== false) {                        
                        $destinatario = trim( $item_email  );
                        mail($destinatario, $asunto, $mensaje, $cabeceras);                    
                        $item_email = strtok(",");
                    }
                
                    
                    return Constantes::$PAGE_USER_REGISTRAR_RESERVA_FINALIZADO_OK; 
                }elseif($retornoVisa->respuesta=='2'){
                    //echo '<br>entro a respuesta denegado'.$eticketRecuperado;
                    $id_reserva = $this->procesarReservaBO->actualizarReservaPorErrorPago($eticketRecuperado);
                    //obtenemos los datos de la reserva y la ficha                    
                    $reserva = $this->procesarReservaBO->obtenerReservaPorId($id_reserva);
                    $ficha = $this->procesarFichaBO->obtenerFichaPorId($reserva->Ficha_id);
                    $accionVisa = $this->procesarReservaBO->obtenerAccionVisaPorCodigo($retornoVisa->codAccion);
                    $medico = $this->procesarReservaBO->obtenerMedicoPorId($ficha->Medico_id);                    
                    $horario = $this->procesarReservaBO->obtenerHorarioPorId($ficha->Horario_id);
                    //cargamos los datos a mostrar
                    //cargamos los datos
                    $_POST['txtDescripcionError']=$accionVisa->codigo." - ".$accionVisa->descripcion;
                    $_POST['txtNroPedido']=$retornoVisa->nroOrden;
                    $_POST['txtTarjetaEnmascarada']=$retornoVisa->pan;
                    $_POST['txtFechaPedido']=$retornoVisa->fechaHoraTx;
                    $_POST['txtImporte']=$retornoVisa->impAutorizado;
                    $_POST['txtPaciente']=$ficha->nombre;
                    $_POST['txtDni']=$ficha->dni;
                    $_POST['txtMedico']=$medico->descripcion;
                    $_POST['txtFechaCita']= date("d/m/Y", strtotime($ficha->fecha_cita));
                    $_POST['txtHoraCita']=$horario->descripcion;
                    return Constantes::$PAGE_USER_REGISTRAR_RESERVA_FINALIZADO_ERROR; 
                }
                        
            }catch(Exception $e){ 
                Util::agregarError($this->messages, $e->getCode(),$e->getMessage()); 
                return Constantes::$PAGE_USER_REGISTRAR_RESERVA_FINALIZADO_ERROR; 
            }
        }else{
            return Constantes::$PAGE_USER_REGISTRAR_RESERVA_FINALIZADO_NO_AUTORIZADO; 
        }         
    }
}
?>